// function generateCinemaSeats(rows = 10, cols = 17) {
//   const seats = [];
//   const aislePositions = [3, 13]; // 0-based 过道插入位置（在 col=3 和 col=13 后插入 "A"）

//   for (let row = 1; row <= rows; row++) {
//     let currentCol = 1; // 1-based 列计数器

//     while (currentCol <= cols) {
//       // 检查当前列是否需要插入过道（0-based 判断）
//       const zeroBasedCol = currentCol - 1;
//       if (aislePositions.includes(zeroBasedCol)) {
//         // 插入过道（不占用编号）
//         seats.push({
//           cinemaSeatsId: 0,
//           row: row,
//           column: "A",
//         });
//         // **不跳过列编号**，继续处理当前列（currentCol 不递增）
//       }

//       // 确定区域和基础价格
//       let title = "";
//       let basePrice = 0;

//       if (row <= 3) {
//         title = "优选区";
//         basePrice = 50;
//       } else if (row <= 7) {
//         title = "普通区";
//         basePrice = 30;
//       } else {
//         title = "特惠区";
//         basePrice = 20;
//       }

//       // 随机状态和选择
//       const status = Math.random() > 0.3 ? 1 : 2;
//       const isSelected = status === 1 && Math.random() > 0.8;

//       // 随机价格波动
//       const price = basePrice + Math.floor(Math.random() * 20) - 10;

//       // 存入座位（column 用 currentCol，因为过道不占用编号）
//       seats.push({
//         title,
//         cinemaSeatsId: isSelected ? 1 : status,
//         price: Math.max(5, price),
//         row: row,
//         column: currentCol, // 1-based 列（过道不占用编号）
//         isSelected,
//       });

//       currentCol++; // 处理完当前列，继续下一列
//     }
//   }

//   return seats;
// }

// // 测试生成 1 行 5 列的数据（0-based 过道位置是 3，即 1-based 的 4）
// const cinemaSeats = generateCinemaSeats();
// console.log(cinemaSeats);
// console.log(cinemaSeats.length);

function generateCinemaSeats(rows = 10, cols = 17) {
    let id = 0;
    const seats = [];
    const aislePositions = [3, 13]; // 0-based 过道插入位置（在 col=3 和 col=13 后插入 "A"）

    for (let row = 1; row <= rows; row++) {
        let currentCol = 1; // 1-based 列计数器（用于座位编号）
        let generatedCols = 0; // 记录当前行已生成的列数（包括 "A"）

        while (generatedCols < cols) {
            // 检查当前列是否需要插入过道（0-based 判断）
            const zeroBasedCol = currentCol - 1;
            if (aislePositions.includes(zeroBasedCol)) {
                // 插入过道（不占用编号）
                seats.push({
                    cinemaSeatsId: 0,
                    row: row,
                    column: "A",
                    userId: 0,
                    payId: 0, // 支付id，未支付：0
                });
                id++;
                generatedCols++; // 增加已生成的列数
                currentCol++; // 继续处理下一列（但 "A" 不占用编号）
                continue; // 跳过后续逻辑，直接进入下一循环
            }

            // 确定区域和固定价格
            let title = "";
            let price = 0;

            if (row <= 3) {
                title = "优选区";
                price = 50;
            } else if (row <= 7) {
                title = "普通区";
                price = 30;
            } else {
                title = "特惠区";
                price = 20;
            }

            // 随机状态和选择
            const status = Math.random() > 0.3 ? 1 : 2;
            const isSelected = status === 1 && Math.random() > 0.8;
            // 已支付状态：如果座位被选中，有一定概率表示已支付
            const isPaid = isSelected && Math.random() > 0.5;

            // 存入座位（column 用 currentCol，因为过道不占用编号）
            seats.push({
                title,
                cinemaSeatsId: isSelected ? 1 : status,
                price, // 直接使用区域对应的固定价格
                row: row,
                column: currentCol, // 1-based 列（过道不占用编号）
                isSelected,
                userId: 0,
                id: id,
                payId: 0, // 支付id，未支付：0
                selectTime: "",
            });
            id++;
            generatedCols++; // 增加已生成的列数
            currentCol++; // 处理完当前列，继续下一列
        }
    }

    return seats;
}

// 测试生成 10 行 17 列的数据
const cinemaSeats = generateCinemaSeats(10, 17);
console.log(cinemaSeats);
console.log("总数据量:", cinemaSeats.length); // 应该是 170
